package com.demo.controller;

import com.demo.dao.repository.PersonRepository;
import com.demo.model.Person;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * ES控制层
 * @author K
 */
@Slf4j
@RestController
public class EsPersonController {

    @Resource
    private PersonRepository personRepository;

    /**
     * 保存个人信息
     * 主要测试将es字段是否支持保存List
     * @param person 请求参数
     */
    @PostMapping("/savePerson")
    public void savePerson(@RequestBody Person person) {
        personRepository.save(person);
        log.info("person保存成功");
    }

    /**
     * 在集合字段identities查找符合一个条件的记录
     * @param identity 身份
     * @return 个人信息集合
     */
    @GetMapping("/queryPersonByIdentity")
    public List<Person> queryPerson(@RequestParam("identity") String identity) {
        return personRepository.findByIdentities(identity);
    }

    /**
     * 在字段identities必须同时包含请求参数的值才被查询出来。
     * 如果只要满足请求参数任意一个值就把该记录查询出来，使用terms查询
     * @param identities 身份集合
     * @return 个人信息集合
     */
    @PostMapping("queryPersonByIdentities")
    public List<Person> queryPerson(@RequestBody List<String> identities) {
        return personRepository.findByIdentities(identities);
    }

}
